﻿#region License
/*
 * Microsoft Public License (Ms-PL)
 * 
 * This license governs use of the accompanying software. If you use the software, you accept this license. 
 * If you do not accept the license, do not use the software.
 *
 * 1. Definitions
 *
 * The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
 *
 * A "contribution" is the original software, or any additions or changes to the software.
 *
 * A "contributor" is any person that distributes its contribution under this license.
 *
 * "Licensed patents" are a contributor's patent claims that read directly on its contribution.
 *
 * 2. Grant of Rights
 *
 * (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, 
 * each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, 
 * prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
 *
 * (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, 
 * each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, 
 * use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the 
 * contribution in the software.
 *
 * 3. Conditions and Limitations
 *
 * (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
 *
 * (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, 
 * your patent license from such contributor to the software ends automatically.
 *
 * (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, 
 * and attribution notices that are present in the software.
 *
 * (D) If you distribute any portion of the software in source code form, you may do so only under this license by including 
 * a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, 
 * you may only do so under a license that complies with this license.
 *
 * (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. 
 * You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, 
 * the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. 
 */
#endregion

#region Usings
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;
#endregion

#region Namespace
namespace XMLSpriteSheets
{
    #region File Type enum
    public enum ImageFileType
    {
        BMP,
        GIF,
        JPG,
        PNG,
        TIFF,
        Unsupported
    }
    #endregion

    #region Class
    public class SpriteSheetFileLoader
    {
        #region Fields and Properties
        /// <summary>
        /// Type of file that was opened as the spritesheet to load from
        /// </summary>
        public ImageFileType fileType { get; private set; }

        /// <summary>
        /// The form that called us
        /// </summary>
        public mainFrm DisplayForm {get; private set;}

        #endregion

        #region Constructor
        public SpriteSheetFileLoader(mainFrm mainForm)
        {
            DisplayForm = mainForm;
        }

        #endregion

        #region Check Sprite Sheet Image Format
        public  ImageFileType GetFileType()
        {
                 
                // What file did we load as the spritesheet ?
                using (Image img = Image.FromFile(DisplayForm.xmlSheet))
                {
                    if (img.RawFormat.Equals(ImageFormat.Bmp))
                    {
                        // Its a bmp
                        MessageBox.Show("BMP");
                        return fileType = ImageFileType.BMP;
                    }
                    else if (img.RawFormat.Equals(ImageFormat.Gif))
                    {
                        // Its a Gif
                        MessageBox.Show("GIF");
                        return fileType = ImageFileType.GIF;
                    }
                    else if (img.RawFormat.Equals(ImageFormat.Jpeg))
                    {
                        // Its a Jpg
                        MessageBox.Show("JPG");
                        return fileType = ImageFileType.JPG;
                    }
                    else if (img.RawFormat.Equals(ImageFormat.Png))
                    {
                        // Its a Png
                        MessageBox.Show("PNG");
                        return fileType = ImageFileType.PNG;
                    }
                    else if (img.RawFormat.Equals(ImageFormat.Tiff))
                    {
                        // Its a Tiff
                        MessageBox.Show("TIFF");
                        return fileType = ImageFileType.TIFF;
                    }
                    else
                    {
                        // We dont support it, he shouldnt have been able to load it, error out.
                        MessageBox.Show(img.RawFormat.ToString(), "Error Unsupported format.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return fileType = ImageFileType.Unsupported;
                        
                    }
                }
        }
        #endregion Check Sprite Sheet Image Format
    }
#endregion Class
}
#endregion Namespace